package com.yzxb.messystem.service;

import com.yzxb.messystem.entity.ProductionRecord;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;

public interface ProductionRecordService {
    
    // 获取所有生产记录
    List<ProductionRecord> getAllProductionRecords();
    
    // 根据ID获取生产记录
    Optional<ProductionRecord> getProductionRecordById(Long id);
    
    // 添加生产记录
    ProductionRecord addProductionRecord(ProductionRecord productionRecord);
    
    // 更新生产记录
    ProductionRecord updateProductionRecord(Long id, ProductionRecord productionRecord);
    
    // 删除生产记录
    void deleteProductionRecord(Long id);
    
    // 根据工单ID查询生产记录
    List<ProductionRecord> getProductionRecordsByWorkOrderId(Long workOrderId);
    
    // 根据记录类型查询生产记录
    List<ProductionRecord> getProductionRecordsByRecordType(ProductionRecord.RecordType recordType);
    
    // 根据工作站查询生产记录
    List<ProductionRecord> getProductionRecordsByWorkstation(String workstation);
    
    // 根据操作员查询生产记录
    List<ProductionRecord> getProductionRecordsByOperator(String operator);
    
    // 根据班次查询生产记录
    List<ProductionRecord> getProductionRecordsByShift(String shift);
    
    // 根据时间范围查询生产记录
    List<ProductionRecord> getProductionRecordsByTimeRange(LocalDateTime startTime, LocalDateTime endTime);
    
    // 添加生产数量记录并更新工单
    ProductionRecord addProductionQuantity(Long workOrderId, Integer quantity, String workstation, String operator, String shift);
    
    // 添加不合格数量记录并更新工单
    ProductionRecord addRejectionQuantity(Long workOrderId, Integer quantity, String workstation, String operator, String shift, String qualityStatus, String remarks);
}